const formatTime = date => {
  const year = date.getFullYear()
  const month = date.getMonth() + 1
  const day = date.getDate()
  const hour = date.getHours()
  const minute = date.getMinutes()
  const second = date.getSeconds()

  return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':')
}

const formatShortTime = date => {
  const hour = date.getHours()
  const minute = date.getMinutes()
  const second = date.getSeconds()

  return [hour, minute].map(formatNumber).join(':')
}

const formatLongTime = date => {
  const hour = date.getHours()
  const minute = date.getMinutes()
  const second = date.getSeconds()

  return [hour, minute, second].map(formatNumber).join(':')
}

const formatDate = date => {
  const year = date.getFullYear()
  const month = date.getMonth() + 1
  const day = date.getDate()

  return [year, month, day].map(formatNumber).join('/')
}

const formatTimeDiff = num => {
  const date = new Date();
  date.setDate(date.getDate() + num);
  const year = date.getFullYear()
  const month = date.getMonth() + 1
  let day = date.getDate()
  const hour = date.getHours()
  const minute = date.getMinutes()
  const second = date.getSeconds()

  return [year, month, day].map(formatNumber).join('/') + ' ' + [hour, minute, second].map(formatNumber).join(':')
}

const formatDateDiff = num => {
  const date = new Date();
  date.setDate(date.getDate() + num);
  const year = date.getFullYear()
  const month = date.getMonth() + 1
  let day = date.getDate()

  return [year, month, day].map(formatNumber).join('/')
}

const formatDateDiff2 = num => {
  const date = new Date();
  date.setDate(date.getDate() + num);
  const year = date.getFullYear()
  const month = date.getMonth() + 1
  let day = date.getDate()

  return [year, month, day].map(formatNumber).join('-')
}

const formatMonthDiff = num => {
  const date = new Date();
  date.setDate(date.getMonth() + num);
  const year = date.getFullYear()
  const month = date.getMonth() + 1
  let day = date.getDate()

  return [year, month, day].map(formatNumber).join('/')
}

const formatNumber = n => {
  n = n.toString()
  return n[1] ? n : '0' + n
}

module.exports = {
  formatTime: formatTime,
  formatShortTime: formatShortTime,
  formatLongTime: formatLongTime,
  formatDate: formatDate,
  formatTimeDiff: formatTimeDiff,
  formatDateDiff: formatDateDiff,
  formatDateDiff2: formatDateDiff2,
  formatMonthDiff: formatMonthDiff,
}